/*! \brief Bounding box Class.
*
*  A basic collision object based on rectangulare shapes.
*/
 
#ifndef __BOUNDING_BOX__
#define __BOUNDING_BOX__

#include <allegro.h>

class BoundingBox {
  public:
    /*! \brief Class constructor.
    *
    * Set every members of the bounding box to 0.
    */
    BoundingBox();
    /*! \brief Class constructor 2
    *
    * Initialize the bounding box with coordinates
    * \param x1 an integer argument.
    * \param y1 an integer argument.
    * \param x2 an integer argument.
    * \param y2 an integer argument.
    * \sa BoundingBox()
    */
    BoundingBox(int x1, int y1, int x2, int y2);
    
    /*! \brief Edit the shape of the box.
    *
    * \param x1 an integer argument.
    * \param y1 an integer argument.
    * \param x2 an integer argument.
    * \param y2 an integer argument.
    * \sa __setBoundingBox(BoundingBox nbb)
    */
    void __setBoundingBox(int x1, int y1, int x2, int y2);
    /*! \brief Edit the shape of the box.
    *
    * \param nbb another bounding box.
    * \sa BoundingBox(int x1, int y1, int x2, int y2)
    */
    void __setBoundingBox(BoundingBox nbb);
    
    /*! \brief Enable/Disable the bounding box.
    *
    * \param s 1=Enabled/0=Disabled.
    */
    void __enableBoundingBox(int s);
    
    /*! \brief Ignore any change in coordinates.
    *
    * \param s 1=Enabled/0=Disabled.
    */
    void __lockBoundingBox(int s);


  protected:
    /**
    * integer.
    * X Coordinate of the lower-left corner.
    */
    int _bbx1;
    /**
    * integer.
    * X Coordinate of the upper-right corner.
    */
    int _bbx2;
    /**
    * integer.
    * Y Coordinate of the lower-left corner.
    */
    int _bby1;
    /**
    * integer.
    * Y Coordinate of the upper-right corner.
    */
    int _bby2;
    /**
    * integer.
    * Bounding Box status
    */
    int _bbs;
    /**
    * integer.
    * A lock
    */ 
    int _bblock;

};

#endif
